iT邦幫忙

2025 iThome 鐵人賽

DAY 7
0

今天我們要認識的是Cookie,為甚麼要認識Cookie呢? 因為這是網路世界當中最基礎、最廣泛使用的儲存與追蹤機制之一,且幾乎所有網站在我們瀏覽時都會用到它。因此我們今天會拆幾個部分來認識它。

什麼是Cookie?

在網頁中,Cookie是一種由伺服器發送並儲存在使用者瀏覽器中的小型文字檔案,而Cookie可以幫忙網站記住我們使用者的資訊,例如登入狀態、篇好設定、購物車內容等。

Cookie的特性

1.儲存在本機

Cookie並不是儲存在網站伺服器上,而是保存在使用者的電腦、手機之類的裝置當中。
影響:這表示當我們下次訪問相同的網站時,瀏覽器會將相應的Cookie一併發送給網站。

2.自動隨請求傳送

只要瀏覽器與網站的網域名稱(Domain)與Cookie設定相符合,每次在發送HTTP/HTTPS請求時,Cookie都會附 加再請求標頭之中。
影響:因此網站能夠認得我們並維持登入狀態或記住偏好設定。

3.具有有效期限

Cookie可以設定有效期限,週期過後會自動失效並刪除。
當然,也可以不設定期限,通常我們稱這種叫做Session Cookie,會在我們關閉瀏覽器後自動消失。

4.可加上限制條件

Domain(網域限制):只能被設定該 Cookie 的網域或子網域讀取
Path(路徑限制):可以限制 Cookie 僅在特定路徑下傳送
Secure 屬性:只能在 HTTPS 連線中傳送,增加安全性
HttpOnly 屬性:無法被 JavaScript 存取,防止 XSS 攻擊竊取 Cookie

5.容量與數量有限

單一 Cookie 通常最大為 4KB 左右,且每個網域可儲存的 Cookie 數量有限(不同瀏覽器限制略有不同,大多在 50~180 之間)

6.用途多樣

身份驗證:維持登入狀態(Session ID)
偏好設定:記住語言、主題、版面配置等
追蹤與分析:分析使用者行為、投放廣告

Cookie 的重要屬性

名稱(Name): Cookie 的名稱,例如beast_senbai
值 (Value):儲存的內容,例如 114514
有效期限 (Expires / Max-Age):Cookie 何時會自動刪除
作用範圍 (Domain / Path):哪個網站或路徑可以讀取它(第四點有提到)
安全性 (Secure / HttpOnly / SameSite):控制是否只能透過 HTTPS 傳送、是否禁止 JavaScript 存取等(第四點有提到)

在 JavaScript 中操作 Cookie

以下是一些基本的程式,可以幫助我們操作跟控制Cookie

設定Cookie:

document.cookie = "username=beast_senbai; path=/; max-age=3600";

設定cookie名稱為username值為beast_senbai
path=/則表示整個網站跟路徑皆有效能讀取到它
max-age=3600則表示有效時間3600秒,時間到後會失效並刪除

讀取Cookie:

console.log(document.cookie); 

顯示所有 Cookie

刪除Cookie:

document.cookie = "username=; max-age=0; path=/";

把名為username的Cookie立刻刪掉

Cookie與隱私

Cookie 雖然方便,但也可能被用來追蹤使用者的上網行為,也因此許多瀏覽器和法律(例如 GDPR)要求網站在使用 Cookie 前,必須徵求使用者同意。

今日小結

今天我們介紹了Cookie的概念也了解到了Cookie的特性及重要屬性,這段將會對我們學習Session、LocalStorage及網頁安全攻防都非常有幫助。而昨天講到之後JS的部分,應該會講到甚麼語法就把那段語法補充上去,不會再額外做一天來學習JS,因為這樣做能夠更好的提升學習效率。另外明天之後我們會進入到學習各類型攻擊的部分,也因此我們會先教Burp Suite是什麼以及功能,後天則會學習Burp Suite的基本操作,之後就會正式進入到學習各類型攻擊了。


上一篇
Day-06 認識JavaScripts
系列文
Izumi從零開始的30日WEB馬拉松7
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言